package com.liux.rabbitmq.three;

import com.liux.rabbitmq.utils.RabbitMQUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.MessageProperties;

import java.nio.charset.StandardCharsets;
import java.util.Scanner;

/**
 * @Date 2022/4/16 22:19
 * @Description
 * 消息持久化：1、队列持久化，2消息持久化
 * 生产者，手动应答，消息不丢失，放回队列
 **/
public class Task2 {

    public static final String TASK_QUEUE_NAME ="ACK_QUEUE";

    public static void main(String[] args) throws Exception{

        //获取通道
        Channel channel = RabbitMQUtil.getChannel();
        //声明一个队列，此处队列持久化了(第二个参数)
        channel.queueDeclare(TASK_QUEUE_NAME, true, false, false, null);
        //控制台获取消息
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String message = scanner.next();
            /**
             * 1、交换机名称
             * 2、路由的key，本次是队列的名称
             * 3、消息持久化，默认在内存，这个属性表示写入磁盘
             * 4、消息体
             */
            channel.basicPublish("", TASK_QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes(StandardCharsets.UTF_8));
            System.out.println("生产者，发出消息：" + message);
        }
    }



}
